SQL ANY and ALL Operators

ஒற்றை நெடுவரிசை மதிப்புக்கும் மற்ற மதிப்புகளின் வரம்புக்கும் இடையே ஒப்பீடு செய்ய ANY மற்றும் ALL operators பற்றி அறிந்து கொள்ளுங்கள்

SQL ANY மற்றும் ALL Operators என்றால் என்ன?

ANY மற்றும் ALL operators ஒரு ஒற்றை நெடுவரிசை மதிப்புக்கும் மற்ற மதிப்புகளின் வரம்புக்கும் இடையே ஒப்பீடு செய்ய உங்களை அனுமதிக்கின்றன.

SQL ANY Operator

ANY operator:

ANY என்பது வரம்பில் உள்ள மதிப்புகளில் ஏதேனும் ஒன்றுக்கு செயல்பாடு true ஆக இருந்தால் நிபந்தனை true ஆக இருக்கும் என்பதாகும்.

ANY தொடரியல்

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
  FROM table_name
  WHERE condition);

குறிப்பு:

Operator ஒரு நிலையான ஒப்பீடு operator ஆக இருக்க வேண்டும் (=, <>, !=, >, >=, <, or <=).

SQL ALL Operator

ALL operator:

ALL என்பது வரம்பில் உள்ள மதிப்புகள் அனைத்திற்கும் செயல்பாடு true ஆக இருந்தால் மட்டுமே நிபந்தனை true ஆக இருக்கும் என்பதாகும்.

SELECT உடன் ALL தொடரியல்

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

WHERE அல்லது HAVING உடன் ALL தொடரியல்

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
  FROM table_name
  WHERE condition);

குறிப்பு:

Operator ஒரு நிலையான ஒப்பீடு operator ஆக இருக்க வேண்டும் (=, <>, !=, >, >=, <, or <=).

ஆர்ப்பாட்ட தரவுத்தளம்

Northwind மாதிரி தரவுத்தளத்தில் "Products" அட்டவணையில் இருந்து ஒரு தேர்வு கீழே உள்ளது:

Products அட்டவணை

+-----------+------------------------------+------------+------------+-----------------------+-------+
| ProductID | ProductName                  | SupplierID | CategoryID | Unit                  | Price |
+-----------+------------------------------+------------+------------+-----------------------+-------+
| 1         | Chais                        | 1          | 1          | 10 boxes x 20 bags    | 18    |
| 2         | Chang                        | 1          | 1          | 24 - 12 oz bottles    | 19    |
| 3         | Aniseed Syrup                | 1          | 2          | 12 - 550 ml bottles   | 10    |
| 4         | Chef Anton's Cajun Seasoning | 2          | 2          | 48 - 6 oz jars        | 22    |
| 5         | Chef Anton's Gumbo Mix       | 2          | 2          | 36 boxes              | 21.35 |
| 6         | Grandma's Boysenberry Spread | 3          | 2          | 12 - 8 oz jars        | 25    |
| 7         | Uncle Bob's Organic Dried... | 3          | 7          | 12 - 1 lb pkgs.       | 30    |
| 8         | Northwoods Cranberry Sauce   | 3          | 2          | 12 - 12 oz jars       | 40    |
| 9         | Mishi Kobe Niku              | 4          | 6          | 18 - 500 g pkgs.      | 97    |
+-----------+------------------------------+------------+------------+-----------------------+-------+

மற்றும் "OrderDetails" அட்டவணையில் இருந்து ஒரு தேர்வு:

OrderDetails அட்டவணை

+---------------+---------+-----------+----------+
| OrderDetailID | OrderID | ProductID | Quantity |
+---------------+---------+-----------+----------+
| 1             | 10248   | 11        | 12       |
| 2             | 10248   | 42        | 10       |
| 3             | 10248   | 72        | 5        |
| 4             | 10249   | 14        | 9        |
| 5             | 10249   | 51        | 40       |
| 6             | 10250   | 41        | 10       |
| 7             | 10250   | 51        | 35       |
| 8             | 10250   | 65        | 15       |
| 9             | 10251   | 22        | 6        |
| 10            | 10251   | 57        | 15       |
+---------------+---------+-----------+----------+

SQL ANY உதாரணங்கள்

பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் Quantity 10-க்கு சமமான ஏதேனும் பதிவுகள் இருந்தால் (Quantity நெடுவரிசையில் 10 மதிப்புகள் இருப்பதால் இது TRUE-ஐ தரும்):

உதாரணம்

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் Quantity 99-ஐ விட பெரிய ஏதேனும் பதிவுகள் இருந்தால் (Quantity நெடுவரிசையில் 99-ஐ விட பெரிய சில மதிப்புகள் இருப்பதால் இது TRUE-ஐ தரும்):

உதாரணம்

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 99);

பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் Quantity 1000-ஐ விட பெரிய ஏதேனும் பதிவுகள் இருந்தால் (Quantity நெடுவரிசையில் 1000-ஐ விட பெரிய மதிப்புகள் இல்லாததால் இது FALSE-ஐ தரும்):

உதாரணம்

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 1000);

SQL ALL உதாரணங்கள்

பின்வரும் SQL statement அனைத்து தயாரிப்பு பெயர்களையும் பட்டியலிடுகிறது:

உதாரணம்

SELECT ALL ProductName
FROM Products
WHERE TRUE;

பின்வரும் SQL statement ProductName-ஐ பட்டியலிடுகிறது, OrderDetails அட்டவணையில் உள்ள அனைத்து பதிவுகளும் Quantity 10-க்கு சமமாக இருந்தால். Quantity நெடுவரிசையில் பல வெவ்வேறு மதிப்புகள் இருப்பதால் (10 மதிப்பு மட்டும் இல்லை) இது FALSE-ஐ தரும்:

உதாரணம்

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

ANY vs ALL காட்சிப் பிரதிநிதித்துவம்

ANY Operator

நிபந்தனை: Quantity = 10 உள்ள ஏதேனும் தயாரிப்புகள்

Product A - Quantity: 10
Product B - Quantity: 5
Product C - Quantity: 8
Product D - Quantity: 10
✓ முடிவு: TRUE (2 பொருந்தும் பதிவுகள்)

ALL Operator

நிபந்தனை: Quantity = 10 உள்ள அனைத்து தயாரிப்புகள்

Product A - Quantity: 10
Product B - Quantity: 5
Product C - Quantity: 8
Product D - Quantity: 10
✗ முடிவு: FALSE (அனைத்தும் பொருந்தவில்லை)

கவனிக்க: ANY ஏதேனும் ஒரு பொருந்தும் பதிவு இருந்தால் TRUE-ஐ தரும், ALL அனைத்து பதிவுகளும் பொருந்தும் போது மட்டுமே TRUE-ஐ தரும்.

நடைமுறை பயன்பாட்டு நிகழ்வுகள்

சராசரி மதிப்புகளை விட அதிகம்

சராசரி விலையை விட அதிக விலை கொண்ட ஏதேனும் தயாரிப்புகள்

SELECT ProductName
FROM Products
WHERE Price > ANY (
    SELECT AVG(Price) 
    FROM Products 
    GROUP BY CategoryID
);

அனைத்து நிபந்தனைகளும்

அனைத்து வாடிக்கையாளர்களும் ஆர்டர் இட்ட தயாரிப்புகள்

SELECT ProductName
FROM Products
WHERE ProductID = ALL (
    SELECT DISTINCT ProductID 
    FROM Orders 
    WHERE CustomerID IN (
        SELECT CustomerID FROM Customers
    )
);

குறைந்தபட்ச மதிப்பு வடிகட்டுதல்

குறைந்தபட்ச விலையை விட குறைவான ஏதேனும் தயாரிப்புகள்

SELECT ProductName
FROM Products
WHERE Price < ANY (
    SELECT MIN(Price) 
    FROM Products 
    GROUP BY SupplierID
);

ANY vs IN ஒப்பீடு

ANY Operator

  • Comparison operators-உடன் பயன்படுத்தலாம் (>, <, =, etc.)
  • மதிப்புகளின் வரம்புடன் ஒப்பீடு செய்ய பயனுள்ளது
  • சிக்கலான நிபந்தனைகளுக்கு ஏற்றது
  • Subquery முடிவுகளுடன் வேலை செய்கிறது
WHERE Price > ANY (subquery)

IN Operator

  • சமமான மதிப்புகளை சோதிக்க பயன்படுகிறது (=)
  • நிலையான மதிப்புப் பட்டியல்களுக்கு ஏற்றது
  • எளிமையான சமத்துவ சோதனைகளுக்கு ஏற்றது
  • Static lists அல்லது subqueries-உடன் வேலை செய்கிறது
WHERE Price IN (10, 20, 30)

குறிப்பு:

= ANY என்பது IN-க்கு சமமானது, ஆனால் > ANY அல்லது < ANY போன்ற மற்ற comparison operators ANY-உடன் பயன்படுத்தப்படும் போது அதிக நெகிழ்வுத்தன்மையை வழங்குகிறது.

பயிற்சி

எந்த SQL statement ANY operator-ஐ சரியாக பயன்படுத்துகிறது?

SELECT * FROM Products WHERE ProductID ANY (SELECT ProductID FROM OrderDetails);
✗ தவறு! ANY-க்கு comparison operator தேவை
SELECT * FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails);
✓ சரி! ANY operator சரியான comparison operator (=) உடன் பயன்படுத்தப்பட்டுள்ளது
SELECT ProductName ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 10);
✗ தவறு! ANY SELECT list-ல் பயன்படுத்த முடியாது
SELECT * FROM Products WHERE ANY ProductID IN (SELECT ProductID FROM OrderDetails);
✗ தவறு! ANY syntax தவறானது, இது WHERE clause-ல் comparison operator-உடன் பயன்படுத்தப்பட வேண்டும்